package tiers2;

import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.List;
import java.util.Random;

import javax.xml.bind.JAXBException;

import tiers3.services.IServicePersistance;
import common.Tweet;
import common.Utilisateur;

public class Main {

	public static void main(String[] args) throws RemoteException {

		Registry registry = LocateRegistry.getRegistry("127.0.0.1", 2000);
		IServicePersistance service;
		try {
			service = (IServicePersistance) registry
					.lookup("ServicePersistance");
			// création d'un utilisateur
			Utilisateur utilisateur = new Utilisateur("Nom"
					+ new Random().nextInt(99999), "Prenom"
					+ new Random().nextInt(99999), "monmail@mail.com",
					"userlogin", "mdp1");
			Tweet tweet = new Tweet(utilisateur.getId(),
					"Ceci est un tweet de test " + new Random().nextInt(99999)
							+ " ! pour " + utilisateur.getNom());
			Tweet tweet2 = new Tweet(utilisateur.getId(),
					"Ceci est un tweet de test n°2" + new Random().nextInt(99999)
							+ " ! pour " + utilisateur.getNom());


			// Test création d'un utilisateur
			utilisateur = service.creerUtilisateur(utilisateur);

			// Test création d'un tweet pour l'utilisateur
			Tweet createdTweet = service.creerTweet(utilisateur, tweet);
			if (createdTweet != null) {
				utilisateur.ajoutTweet(createdTweet);
			}
			createdTweet = service.creerTweet(utilisateur, tweet2);
			if (createdTweet != null) {
				utilisateur.ajoutTweet(createdTweet);
			}
	
			// Recherche de tous les utilisateurs
			List<Utilisateur> maListeUser = service
					.rechercherTousUtilisateurs();

			// Recherche de tous les tweets
			List<Tweet> maListeTweets = service.rechercherTousTweets();
			System.out.println("------Les utilisateurs:");
			for (Utilisateur u : maListeUser) {
				System.out.println(u.getNom() + ", " + u.getPrenom() + " (id: " + u.getId()+")");
			}
			System.out.println("------Les tweets: ");
			for (Tweet tweets : maListeTweets) {
				System.out.println(tweets.getContenu());
			}
			System.out.println("------Les tweets par utilisateur: ");
			for (Utilisateur u : maListeUser) {
				for (Tweet t : u.getListeTweets()) {
					System.out.println(t.getContenu());
				}
				System.out.println("Posté par: " + u.getNom() + "\n");

			}
		} catch (NotBoundException e) {
			e.printStackTrace();
		} catch (JAXBException e) {
			e.printStackTrace();
		}

	}

}
